/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mod.dao;

import java.sql.*;
/**
 *
 * @author willy
 */
public class connexion {
    private Connection Con;
    private Statement St;
    /*private String BD="jonathanroth";
    private String Login="pg_user";
    private String Passwd="123456";
    private String Host="81.51.148.251";//"localhost";//"87.88.159.65";*/

    private String BD="bdp";
    private String Login="root";
    private String Passwd="";
    private String Host="localhost";//"87.88.159.65";

    private int Port=3306;
    private String NomPilote="com.mysql.jdbc.Driver";
    private boolean pilote=false;
    protected static String Table;
    public String getBD() {
        return BD;
    }

    public void setBD(String BD) {
        this.BD = BD;
    }

    public Connection getCon() {
        return Con;
    }

    public void setCon(Connection Con) {
        this.Con = Con;
    }

    public String getHost() {
        return Host;
    }

    public void setHost(String Host) {
        this.Host = Host;
    }

    public String getLogin() {
        return Login;
    }

    public void setLogin(String Login) {
        this.Login = Login;
    }

    public String getPasswd() {
        return Passwd;
    }

    public void setPasswd(String Passwd) {
        this.Passwd = Passwd;
    }

    public Statement getSt() {
        return St;
    }

    public void setSt(Statement St) {
        this.St = St;
    }

    public boolean isPilote() {
        return pilote;
    }

    public void setPilote(boolean pilote) {
        this.pilote = pilote;
    }

    public String getNomPilote() {
        return NomPilote;
    }

    public void setNomPilote(String NomPilote) {
        this.NomPilote = NomPilote;
    }

    public int getPort() {
        return Port;
    }

    public void setPort(int Port) {
        this.Port = Port;
    }

    /** Creates a new instance of Bdd */

    private boolean Connexion()
    {
        boolean b=false;
        if(getCon()==null) // si il n' ya pas une connexion active
        {
            if(!pilote)
            try {
                    Class.forName(getNomPilote()).newInstance();
                    pilote=true;
            } catch(Exception e) {/*System.out.println("erreur de chargement du pilote");*/}

            try {
                    Con=DriverManager.getConnection("jdbc:mysql://"+Host+":"+Port+"/"+BD, Login, Passwd);
                    b=true;
                    //System.out.println("BD='"+BD+"'   user='"+Login+"'   password='"+Passwd+"'");
            }catch (Exception e) {System.out.println("erreur de connexion a la BD"); e.printStackTrace();}
        }
        else { b=true;}
        return b;
    }
    private void Deconnexion()
    {
            try {
                    Con.close();
                    pilote=false;
                    setCon(null);
            }catch(Exception e) { e.printStackTrace();}
    }
    public ResultSet Liste(String tab)
    {
        ResultSet r=null;
            String req="select * from "+tab+"";
            r=Req_LID(req);
        return r;
    }
    /**
     * Methode qui execute une Requete d'interrogation des donnÃ©es
     * elle prend en parametre la chaine contenant la requete
     */
    public ResultSet Req_LID(String req)
    {
        ResultSet r=null;
        if(this.Connexion())
        {
            //System.out.println(req);
            Statement Stat=null;

            try {
                    Stat=Con.createStatement();
                    r=Stat.executeQuery(req);
                    return r;
            }
            catch (Exception e) {}
            this.Deconnexion();
        }
        return r;
    }

    /**
     * Methode qui execute une Requete de manipulation des donnÃ©es
     * @param req requete a executer
     * @return Nombre d'enregistrement manipulÃ©
     */
    public int Req_LMD(String req)
    {
        int v=0;
        System.out.println(req);
        if(this.Connexion())
        {
                Statement Stat=null;
                try {
                        Stat=Con.createStatement();
                        v= Stat.executeUpdate(req);
                }
                catch (Exception e) { e.printStackTrace();}
                this.Deconnexion();
                System.out.println("fini");
        }
        System.out.println("Nbre de lignes validÃ© : "+v);
        return v;
    }

    /**
     * Methode d'exÃ©cution d'une Requete transactionnelle
     * (aprÃ¨s son execution il faudrait faire un commit pour valider la transaction)
     * @param req requete Ã  executer
     * @return nombre d'enregistrement manipulÃ©
     */
    public int Req_LMD_Trans(String req)
    {
        this.Connexion();
            Statement Stat=null;
            int v=0;
            try {
                    Con.setAutoCommit(false);
                    Stat=Con.createStatement();
                    v= Stat.executeUpdate(req);
            }
            catch (Exception e) { e.printStackTrace();}
            finally { this.Deconnexion(); return v;}
    }

    /**
     * MÃ©thode d'execution d'une procÃ©dure stockÃ©e
     * @param nom nom de la procÃ©dure stockÃ©e
     */
    public void Procedure(String nom)
    {
        this.Connexion();
            try
            {
                Con.prepareCall(nom);
            }catch (Exception e) {}
    }

    public static void main(String[] arg)
    {
     

    }
}
